/**
 * 全局类型定义
 * `命名规则如下`
 */

/**
 * 用户申请状态(后端提供)
 */
export enum EApplyState {
  /**
   * 初始状态
   */
  INIT = 'init',

  /**
   * 验证中
   */
  VERIFY = 'verify',

  /**
   * 验证通过
   */
  PASSED = 'passed',

  /**
   * 验证不通过
   */
  NO_PASS = 'no_pass',

  /**
   * 激活
   */
  ACTIVE = 'active',

  /**
   * 禁用
   */
  DISABLED = 'disabled'
}

/**
 * 登录用户信息
 */
export class UserInfo {
  email = ''
  gmtCreate = 0
  mobile = ''
  name = ''
  roleType = ''
  state = EApplyState.INIT
}

/**
 * 菜单
 */
export interface IMenu {
  key: string
  title: string
  path: string
  icon: string
  children?: IMenu[]
}

/**
 * 验证规则
 */
export interface IValidRule {
  ref: string
  type?: InputType
  pattern?: string
  compare?: string
  msg?: string
  placeholder?: string
}

/**
 * 输入类型
 */
type InputType = 'text' | 'password' | 'textarea' | 'number' | 'select'

/**
 * 表单验证类型
 */
export interface IFormRules {
  [key: string]: IValidRule
}

/**
 * 上传文件类型
 * 默认为ID，正面: ''
 * id: ID反面
 * face: 人脸
 * license: 营业执照等
 * contract: 合同
 */
export type TUploadCategory = '' | 'id' | 'face' | 'license' | 'voucher' | 'remittance' | 'contract'